|
img http://blacklight.gotdns.org/ Ho un cellulare come tutti voi, o quasi. Con le estensioni di memoria attuale, mi sono regalato una micro-SD da 2GB. Fantastica! Posso registrare una intera lezione di Sistemi Operativi!! Benchè la stessa sia un monologo interiore del mio docente, sarebbe utile poterla riascoltare. Il cellulare memorizza l'audio in formato amr. Questo formato è comodissimo per scambiarcelo tra cellulari. Il mio collega, restìo alla tecnologia, vorrebbe poter ascoltare cosa il docente ha raccontato all'ultima lezione senza dover acquistare un nuovo cellulare. Come ovviare al problema? Semplice, basta dirlo a ZERO.¹
#!/bin/bash # # Bella ZERO! Sarò breve e conciso. Questo il tuo lavoro da una banana di oggi.. # Questo è uno script. Significa che usiamo programmi altrui per arrivare ai nostri intenti. ;) # Tra questi, segnati 'ciccio', il nostro programma di codifica. # ('ciccio' lo posso anche cambiare, ma lo farò qui.) ciccio=/usr/bin/gst-launch-0.10 # # Cosa è gst-launch-0.10?? Beh, gstreamer-tools-0.10.* Lo abbiamo installato giusto oggi. # Perchè me lo chiedi? Guardati http://gstreamer.freedesktop.org # in particolare gstreamer-plugins-ugly. Non e' stato facile trovare # il plugin 'amr_nb', ma adesso che c'è... Usiamolo! # # Per quello ti ho detto 'ciccio'. # Perchè se cambio idea su gstreamer e voglio provare qualcosa d'altro tipo 'ffmpeg'... # L'uomo è volubile... la macchina no. # Ad esso dovrò darti almeno un nome di file. # Se me lo invento, ovvero quel file non esiste, dimmi che # non ti devo prendere in giro, e spiegami cosa vuole questo script. # (Questa volta, però, non parlare... scrivimelo su console.)
[ "$#" -lt 1 -o ! -f "$1" ] && echo "# Utilizzo : $(basename $0) file.amr [file.wav]" && exit -1
# Se invece ti dico il nome del file, tu segnatelo come 'sorgente' sorgente="$1"
# Crea un file temporaneo. (Ci andremo a lavorare dentro..) tmpfile=$(mktemp)
# Questo script prevede di creare un file .wav file_wav=""
# Pertanto se te l'ho indicato come secondo argomento... usalo! [ -n "$2" ] && file_wav="$2"
# ... altrimenti, dovrai creare un file che abbia estensione .wav # Devo dirti proprio tutto? Uffa ZERO... # Stai attento! Sciocco scimpanzè... # Si presuppone che ti stia passando un file .amr per eseguire # questo script, giusto? Bene. Allora come vuoi che si chiami # il file, se non allo stesso modo, ma .wav? # :)
[ ! -n "$2" ] && file_wav=$(echo $(basename $1) | sed 's/.amr/.wav/' )
# Bravo! Prendi il file temporaneo, ZERO.. # Questo immaginalo come una busta della mondezza. # Di quelle nere, grandi.. (Tu non le puoi vedere.) Vabbe', una busta di mondezza. # Sai che cosa ne devi fare? # 1) Ci butti dentro il file che ti ho passato come primo argomento. Però fatto a pezzi. Come dico io. # 2) Lo rileggi con 'ciccio' ed il risultato lo salvi in 'file_wav' # Ovviamente lo rileggi come ti dico io... così ne esce un file .wav
dd if="$sorgente" of="$tmpfile" bs=1 count=10000000 skip=6 && \ $ciccio filesrc location="$tmpfile" ! amrnbparse ! amrnbdec ! wavenc ! filesink location="$file_wav"
# Bella ZERO! Ecco la banana. Dimenticavo... cancella il file temporaneo. # Non vorrai mica lasciare quella busta nera tra le mie cose! ZERO!
rm -f "$tmpfile"
# Hack 2: Attack 0 # # Hack 3: Attack 0 ======================= # Beh.. adesso che ci siamo, perche' anziche' in .wav non lo facciamo # direttamente un .mp3? (o meglio .ogg!!!) # Facciamo che miglioriamo questo script e lo chiamiamo 'amr2mp3' # Ma quest'ultimo.. Te lo scrivo in un altro file.. Questo file.. # È già troppo lungo così... :)
¹ Zero è il computer, nonchè il migliore amico, di Rex, autore dell'articolo.
|